package models;

import javax.persistence.Cacheable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

import enums.EPState;
import enums.Jornada;

@Entity
@Table(name = "colegio")
// @NamedQueries({
// @NamedQuery(name = "getAnioActual", query =
// "SELECT a FROM Anio a WHERE CURRENT_TIMESTAMP BETWEEN a.fechaInicio AND a.fechaFin AND a.idColegio = :idColegio"),
// @NamedQuery(name = "getCalendarioActual", query =
// "SELECT a FROM Calendario a WHERE CURRENT_TIMESTAMP BETWEEN a.fechaInicio AND a.fechaFin AND a.idColegio = :idColegio")
// })
@Cacheable(true)
public class Colegio extends models.Entity<Long> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;
	@Column(name = "nombre")
	private String nombre;
	@Column(name = "id_calendario_academico_actual")
	private Long idCalendarioAcademicoActual;
	@Column(name = "id_periodo_actual")
	private Long idPeriodoActual;

	@Enumerated(EnumType.STRING)
	@Column(name = "state")
	private EPState state;

	@Column(name = "jornada")
	@Enumerated(EnumType.STRING)
	private Jornada jornada;

	@Column(name = "direccion")
	private String direccion;
	@Column(name = "telefono")
	private String telefono;

	@Transient
	// TODO volver atributo en BD
	private String sede;

	public Colegio() {
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Long getIdCalendarioAcademicoActual() {
		return idCalendarioAcademicoActual;
	}

	public void setIdCalendarioAcademicoActual(Long idCalendarioAcademicoActual) {
		this.idCalendarioAcademicoActual = idCalendarioAcademicoActual;
	}

	public Long getIdPeriodoActual() {
		return idPeriodoActual;
	}

	public void setIdPeriodoActual(Long idPeriodoActual) {
		this.idPeriodoActual = idPeriodoActual;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public Jornada getJornada() {
		return jornada;
	}

	public void setJornada(Jornada jornada) {
		this.jornada = jornada;
	}

	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public String getSede() {
		return sede;
	}

	public void setSede(String sede) {
		this.sede = sede;
	}

	public EPState getState() {
		return state;
	}

	public void setState(EPState state) {
		this.state = state;
	}

}
